/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI.GerenciarTREF;

import ClassesListas.LinhasMatrizConfusao;
import java.awt.event.MouseEvent;
import java.io.File;
import java.util.ArrayList;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTable;

/**
 *
 * @author Igor
 */
public class FramePanelMatrizConfusao extends javax.swing.JPanel {

    private JTabbedPane tabbedPane;
    private int indice;
    private ArrayList<JPanel> listaPanel;
    private LinhasMatrizConfusao linhasMatrizConfusao;

    /**
     * Creates new form MatrizConfusao
     * @param tabbedPane
     * @param listaPanel
     */
    public FramePanelMatrizConfusao(JTabbedPane tabbedPane, ArrayList<JPanel> listaPanel) {
        initComponents();
        this.tabbedPane = tabbedPane;
        this.listaPanel = listaPanel;
        this.linhasMatrizConfusao = new LinhasMatrizConfusao();
        
        textAreaDetalhes.setVisible(false);
        
        labelDescricaoMatrizConfusao.setText("");
        labelDescricaoJogador.setText("");
        labelDescricaoPeriodoInicial.setText("");
        labelDescricaoPeriodoFinal.setText("");
        labelDescricaoSubFaseIntensidade.setText("");
        labelApenasBaseline.setText("");
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        labelJogador = new javax.swing.JLabel();
        labelPeriodoInicial = new javax.swing.JLabel();
        labelPeriodoFinal = new javax.swing.JLabel();
        labelTipoMatrizConfusao = new javax.swing.JLabel();
        labelDescricaoMatrizConfusao = new javax.swing.JLabel();
        labelSubFaseIntensidade = new javax.swing.JLabel();
        labelDescricaoJogador = new javax.swing.JLabel();
        labelDescricaoPeriodoInicial = new javax.swing.JLabel();
        labelDescricaoPeriodoFinal = new javax.swing.JLabel();
        labelDescricaoSubFaseIntensidade = new javax.swing.JLabel();
        jScrollPane2 = new javax.swing.JScrollPane();
        tableMatrizConfusao = new javax.swing.JTable();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        labelApenasBaseline = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        textAreaDetalhes = new javax.swing.JTextArea();

        setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        labelJogador.setText("Jogador:");

        labelPeriodoInicial.setText("Período Inicial:");

        labelPeriodoFinal.setText("Período Final:");

        labelTipoMatrizConfusao.setText("Tipo de Matriz Confusão:");

        labelDescricaoMatrizConfusao.setText("DescricaoMatriz");

        labelSubFaseIntensidade.setText("SubFase - Intensidade:");

        labelDescricaoJogador.setText("DescricaoJogador");

        labelDescricaoPeriodoInicial.setText("DescricaoPeriodoInicial");

        labelDescricaoPeriodoFinal.setText("DescricaoPeriodoFinal");

        labelDescricaoSubFaseIntensidade.setText("DescricaoSubFaseIntensidade");

        tableMatrizConfusao.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Título 1"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tableMatrizConfusao.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        tableMatrizConfusao.setAutoscrolls(false);
        jScrollPane2.setViewportView(tableMatrizConfusao);

        jButton1.setText("Fechar Matriz");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("Salvar Matriz Confusão");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        labelApenasBaseline.setText("ApenasBaseline");

        textAreaDetalhes.setColumns(20);
        textAreaDetalhes.setRows(5);
        jScrollPane1.setViewportView(textAreaDetalhes);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(labelApenasBaseline)
                    .addComponent(labelTipoMatrizConfusao)
                    .addComponent(labelDescricaoMatrizConfusao)
                    .addComponent(labelJogador)
                    .addComponent(labelDescricaoJogador)
                    .addComponent(labelPeriodoInicial)
                    .addComponent(labelDescricaoPeriodoInicial)
                    .addComponent(labelPeriodoFinal)
                    .addComponent(labelDescricaoPeriodoFinal)
                    .addComponent(labelSubFaseIntensidade)
                    .addComponent(labelDescricaoSubFaseIntensidade)
                    .addComponent(jButton2)
                    .addComponent(jButton1))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 386, Short.MAX_VALUE)
                    .addComponent(jScrollPane1)))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(labelTipoMatrizConfusao)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelDescricaoMatrizConfusao)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelJogador)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelDescricaoJogador)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelPeriodoInicial)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelDescricaoPeriodoInicial)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelPeriodoFinal)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelDescricaoPeriodoFinal)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelSubFaseIntensidade)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelDescricaoSubFaseIntensidade)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelApenasBaseline)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton1)
                .addContainerGap(103, Short.MAX_VALUE))
            .addGroup(layout.createSequentialGroup()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1))
        );
    }// </editor-fold>//GEN-END:initComponents

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        // TODO add your handling code here:
        tabbedPane.remove(this);
        for (int i = 0; i < listaPanel.size(); i++) {
            if (((FramePanelMatrizConfusao) listaPanel.get(i)).getIndice() == getIndice()) {
                listaPanel.remove(i);
            }
        }
        if (listaPanel.size() == 0) {
            listaPanel = null;
        }
    }//GEN-LAST:event_jButton1ActionPerformed

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        // TODO add your handling code here:
        //Abre tela de salvarmento do arquivo
        JFileChooser fc = new JFileChooser(new File(""));
        fc.showSaveDialog(this);
        fc.getSelectedFile();
        if (fc.getSelectedFile() != null) {
            String caminho = fc.getSelectedFile().getAbsolutePath();
            String textoAntes = "Tipo Matriz Confusão;Jogador;Período Inicial;Período Final;SubFase - Intensidade;%n"+labelDescricaoMatrizConfusao.getText() + ";" + labelDescricaoJogador.getText() + ";" + labelDescricaoPeriodoInicial.getText() + ";" + labelDescricaoPeriodoFinal.getText() + ";" + labelDescricaoSubFaseIntensidade.getText() + ";"+labelApenasBaseline.getText()+";%n";
            this.linhasMatrizConfusao.gravaMatrizConfusaoArquivo(textoAntes, caminho, textAreaDetalhes.getText(), true);
        }
    }//GEN-LAST:event_jButton2ActionPerformed


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JLabel labelApenasBaseline;
    private javax.swing.JLabel labelDescricaoJogador;
    private javax.swing.JLabel labelDescricaoMatrizConfusao;
    private javax.swing.JLabel labelDescricaoPeriodoFinal;
    private javax.swing.JLabel labelDescricaoPeriodoInicial;
    private javax.swing.JLabel labelDescricaoSubFaseIntensidade;
    private javax.swing.JLabel labelJogador;
    private javax.swing.JLabel labelPeriodoFinal;
    private javax.swing.JLabel labelPeriodoInicial;
    private javax.swing.JLabel labelSubFaseIntensidade;
    private javax.swing.JLabel labelTipoMatrizConfusao;
    private javax.swing.JTable tableMatrizConfusao;
    private javax.swing.JTextArea textAreaDetalhes;
    // End of variables declaration//GEN-END:variables
    public JLabel getDescricaoMatriz() {
        return labelDescricaoMatrizConfusao;
    }

    public JLabel getDescricaoJogador() {
        return labelDescricaoJogador;
    }

    public JLabel getDescricaoPeriodoInicial() {
        return labelDescricaoPeriodoInicial;
    }

    public JLabel getDescricaoPeriodoFinal() {
        return labelDescricaoPeriodoFinal;
    }

    public JLabel getDescricaoSubFaseIntensidade() {
        return labelDescricaoSubFaseIntensidade;
    }

    public JTable getTabelaMatrizConfusao() {
        return tableMatrizConfusao;
    }
    
    public JLabel getLabelApenasBaseline() {
        return labelApenasBaseline;
    }

    /**
     * @return the indice
     */
    public int getIndice() {
        return indice;
    }

    /**
     * @param indice the indice to set
     */
    public void setIndice(int indice) {
        this.indice = indice;
    }

    /**
     * @return the linhasMatrizConfusao
     */
    public LinhasMatrizConfusao getLinhasMatrizConfusao() {
        return linhasMatrizConfusao;
    }

    /**
     * @param linhasMatrizConfusao the linhasMatrizConfusao to set
     */
    public void setLinhasMatrizConfusao(LinhasMatrizConfusao linhasMatrizConfusao) {
        this.linhasMatrizConfusao = linhasMatrizConfusao;
    }
    
    public void escreveDetalhes(String detalhes){
        textAreaDetalhes.setText(detalhes);
        textAreaDetalhes.setVisible(true);
    }
}
